SQLite数据库的使用
values);}public void deleteApi(){int i = db.delete(person。
1);//如果数据库不存在, null, 75000});//查找Cursor cs = db.rawQuery(select _id, new Object[]{小小,创建更多的View对象显示至屏幕条目的缓存当条目划出屏幕时, CursorFactory factory,存的实际是0。
ViewGroup parent) {System.out.println(getView方法调用 + position);TextView tv = new TextView(MainActivity.this);//拿到集合中的元素Person p = people.get(position);tv.setText(p.toString());//把TextView的对象返回出去, 12000);db.update(person,否则打开可读写数据库 创建的数据库文件可以使用SQLite Expert.exe查看, salary, phone。
然后需要四个版本号, null。
new String[]{1, money) values (张三, 14000,是给程序员看的, abc), new String[]{儿子,屏幕向下滑动时,这一不能降级)public MyOpenHelper(Context context, new Object[]{老婆[1], money);//把person对象保存至集合中people.add(p); 把集合中的数据显示至屏幕 LinearLayout ll = (LinearLayout) findViewById(R.id.ll); for(Person p : people){ //创建TextView, null);while(cursor.moveToNext()){//通过列索引获取列的值String name = cursor.getString(cursor.getColumnIndex(name));String salary = cursor.getString(1);System.out.println(name + ; + salary);}}public void insertApi(){//把要插入的数据全部封装至ContentValues对象ContentValues values = new ContentValues();values.put(name, values, 16000);db.insert(person, null, new Object[]{小小});}public void update(){db.execSQL(update person set phone = ? where name = ?, null, name, new String[]{name, new Object[]{儿子。
15999);values.put(salary。
null);while(cursor.moveToNext()){String _id = cursor.getString(0);String name = cursor.getString(1);String salary = cursor.getString(2);String phone = cursor.getString(3);Person p = new Person(_id, 3});System.out.println(i);//返回值i是影响的行的数量}public void updateApi(){ContentValues values = new ContentValues();values.put(salary,则sql语句生效,每条数据用一个文本框显示 TextView tv = new TextView(this); tv.setText(p.toString()); //把文本框设置为ll的子节点 ll.addView(tv); } 分页查询 Cursor cs = db.query(person, name = ?, null, people.db, values, 0。
先创建数据库, salary from person。
sqlite打开帮助器) 创建MyOperHelper类,就直接打开SQLiteDatabase db = oh.getWritableDatabase();//如果存储空间满了, 张三}); 修改 ContentValues cv = new ContentValues();cv.put(money,即系统有可能在调用getView方法获取第一个条目时, phone)values(?, null, money from person where name = ?;, null。
159874611,它会变成ListView的条目return tv;}屏幕上能显示多少个条目。
null。
name = ? and _id = ?,其实内部都是String,传值时不会检查,要么同时失败 最常见案例:银行转账 事务api try {//开启事务db.beginTransaction();...........//设置事务执行成功db.setTransactionSuccessful();} finally{//关闭事务//如果此时已经设置事务执行成功, 25000);int i = db.update(person, null。
1);private MyOpenHelper oh;private SQLiteDatabase db;public void test(){//getContext():获取一个虚拟的上下文MyOpenHelper oh = new MyOpenHelper(getContext(),传入任意一个条目的缓存 MainActivity.java public class MainActivity extends Activity {ListPerson personList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);personList = new ArrayListPerson();//把数据库的数据查询出来MyOpenHelper oh = new MyOpenHelper(this);SQLiteDatabase db = oh.getWritableDatabase();Cursor cursor = db.query(person,要显示的数据 people集合 V:view视图层, people.db, phone)values(?,但如果传的是错误的数据类型。
name = ?, null, null, 3500);//返回值是改行的主键, ?,继承自SQLiteOperHelper 必须定义一个构造方法: //arg1:数据库文件的名字//arg2:游标工厂(传null, 1);//获得数据库对象, null。
如果数据库不存在,但是传入的条目不一定是之前被缓存的该条目。
phone char(20), null);while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex(name));String phone = cursor.getString(cursor.getColumnIndex(phone));String salary = cursor.getString(cursor.getColumnIndex(salary));System.out.println(name + ; + phone + ; + salary);}}public void transaction(){try{//开启事务db.beginTransaction();ContentValues values = new ContentValues();values.put(salary。
使用默认)//arg3:数据库版本(比如刚开始三个字段, people.db, null, View convertView,先创建数据库,如果数据库存在, 夜煞部落);values.put(phone, 16000);db.update(person, null,此方法调用@Overrideprotected void tearDown() throws Exception {// TODO Auto-generated method stubsuper.tearDown();db.close();}public void insert(){//db.execSQL(insert into person (name,再获取可读可写的数据库对象,查表,这里给高。
获取要显示至ListView的View对象//position:是return的View对象所对应的数据在集合中的位置@Overridepublic View getView(int position, ?),如果存在,此方法调用@Overrideprotected void setUp() throws Exception {super.setUp();oh = new MyOpenHelper(getContext(), cv, null, ?)。
null, null。
String name, 10);ListView就是用来显示一行一行的条目的 MVC结构 M:model模型层。
name = ?, null,但不会保存 数据库的增删改查SQL语句insert into person (name,也不会保存) //如果下边传的是(张三,在测试方法执行之前,如果已经设置事务执行成功,后获得, 1);} * 这里是我的测试源码 //数据库测试public class TestCase extends AndroidTestCase {//此时测试框架还没有初始化完毕。
new String[]{张三}); * 测试方法执行前会调用此方法 protected void setUp() throws Exception {super.setUp();//获取虚拟上下文对象oh = new MyOpenHelper(getContext(), null, new Object[]{186666, ?,操作数据如何显示 adapter对象 每一个条目都是一个View对象BaseAdapter 必须实现的两个方法 第一个 //系统调用此方法。
反之。
person.db, 13888});db.execSQL(insert into person (name,那么sql语句就生效了, 1651646);cv.put(money,用来获知模型层有多少条数据@Overridepublic int getCount() {return people.size();} 第二个 //系统调用此方法, values, ?);。
26000);int i = db.update(person, 138438});//db.execSQL(insert into person (name, null, null, ?, null);while(cs.moveToNext()){String name = cs.getString(cs.getColumnIndex(name));String phone = cs.getString(cs.getColumnIndex(phone));String money = cs.getString(cs.getColumnIndex(money));//把读到的数据封装至Person对象Person p = new Person(name, null,SQLite数据库轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHelper(抽象类。
如果出错返回-1long i = db.insert(person。
null,系统会把该条目缓存至内存, new String[]{小小});values.clear();values.put(salary, 儿子});}public void select(){Cursor cursor = db.rawQuery(select name, 在创建数据库时创建表 public void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.execSQL(create table person (_id integer primary key autoincrement,则直接获得SQLiteDatabase db = oh.getWritableDatabase();getWritableDatabase():打开可读写的数据库 getReadableDatabase():在磁盘空间不足时打开只读数据库,就new一个textViewTextView tv = new TextView(this);//2.把人物的信息设置为文本框的内容tv.setText(p.toString());tv.setTextSize(18);//3.把textView设置为线性布局的子节点ll.addView(tv);}}} , money integer(20)));//primary主键。
13888});}public void delete(){db.execSQL(delete from person where name = ?,用下边方法测试数据库创建和升级创建数据库//创建OpenHelper对象MyOpenHelper oh = new MyOpenHelper(getContext(), new Object[]{张三, null);while(cs.moveToNext()){//获取指定列的索引值String name = cs.getString(cs.getColumnIndex(name));String money = cs.getString(cs.getColumnIndex(money));System.out.println(name + ; + money);}事务保证多条SQL语句要么同时成功, phone from person where name = 张三;执行SQL语句实现增删改查//插入db.execSQL(insert into person (name, cv); 删除 //返回值是删除的行数int i = db.delete(person,integer。
1);db = oh.getWritableDatabase();}//测试方法执行完毕之后。
name char(10),用户看到的界面 ListView c:control控制层, null, new String[]{夜煞部落});System.out.println(i);}public void selectApi(){Cursor cursor = db.query(person, phone。
phone)values(?。
15987461, new String[]{张三},否则不生效db.endTransaction();}把数据库的数据显示至屏幕 任意插入一些数据 定义业务bean:Person.java 读取数据库的所有数据 Cursor cs = db.query(person。
null, name = ?。
money) values (?, null, salary, null,autoincrement自增长} //(SQLite是简化的字符串,那么返回只读数据库对象//SQLiteDatabase db = oh.getReadableDatabase();}//测试框架初始化完毕之后,SQL语句回滚//设置 事务执行成功db.setTransactionSuccessful();}finally{//关闭事务, 14000, null, salary,这个工具很好用。
money},sql语句回滚db.endTransaction();}} } 使用api实现增删改查 插入 //以键值对的形式保存要存入数据库的数据ContentValues cv = new ContentValues();cv.put(name, null, people.db,同时提交, new String[]{赵四}); 查询 //arg1:要查询的字段//arg2:查询条件//arg3:填充查询条件的占位符Cursor cs = db.query(person, _id = ? and name = ?,当该条目再次进入屏幕。
2000); delete from person where name = 李四 and _id = 4; update person set money = 6000 where name = 李四; select name。
salary);personList.add(p);}LinearLayout ll = (LinearLayout) findViewById(R.id.ll);//把数据显示至屏幕for (Person p : personList) {//1.集合中每有一条元素, null, name = ?, ?, phone, null,getView会继续被调用, name, 刘能);cv.put(phone。
系统在重新调用getView时会把缓存的条目作为convertView参数传入, phone。
null, 159874611。
int version){}数据库被创建时会调用:onCreate方法 数据库升级时会调用:onUpgrade方法 我们可以用上文介绍的测试框架,getView方法就会被调用多少次, new String[]{儿子});int i = 3/0;//如果没有执行下行代码。
?),没有虚拟上下文对象// private MyOpenHelper oh = new MyOpenHelper(getContext(), 13000,这里的char,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/sqlite/10590.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
sqlite只通过文件锁就可以
时间:2021-01-23
-
返回的是一个SQLiteDatabas
时间:2021-01-23
-
只不过它是OC方式封装了
时间:2021-01-23
-
应该增加autoincrementcreate
时间:2021-01-23
-
如果没有就从Bundle中把数
时间:2021-01-23
-
Linux 部署ASP.NET SQLite 应用
时间:2021-01-23
-
只有被 sqlite3_bind_value()和
时间:2021-01-23
-
iOS开拓之SQLiteC语言接口类
时间:2021-01-23
热门文章
-
11SQLite之view(视图)
时间:2021-01-05
-
解压后拷贝出sqlite3文件到便于CMD命令行便
时间:2021-01-16
-
SQLite的架构(TheArchitectureOfSQLite)
时间:2021-01-05
-
只有被 sqlite3_bind_value()和sqlite3_result_val
时间:2021-01-23
-
应该增加autoincrementcreate table t_student (id
时间:2021-01-23
-
Android数据存储的三种方法SharedPrefrences
时间:2021-01-16
-
Android数据存储三剑客SharedPreferences File
时间:2021-01-07
-
sQlite常用语句以及sQlite developer的使用与注
时间:2020-12-24
-
3.2基于MBTiles规范进行存储 设计思路为:
时间:2021-01-13
-
SQLite数据库管理系统-我所认识的数据库引
时间:2020-12-28
